package main

import "fmt"

func main() {
	//声明一个变量
	var a int = 10
	fmt.Println("a变量的值：", a)
	fmt.Println("a变量的地址：", &a)

	//声明一个指针变量，*int

	var p *int
	p = &a //指针变量存储的地址
	fmt.Printf("p变量存储的指针地址 :%p\n", p)
	fmt.Printf("p变量的地址 :%p\n", &p)
	fmt.Println("*p变量的地址 ", *p)

	//再定义一个指针ptr，来指向指针变量p  指针的指针 也是一个地址
	var ptr **int
	ptr = &p
	fmt.Printf("ptr存储的指针的地址：%p\n", ptr)  //p的地址
	fmt.Printf("ptr 变量自己的地址：%p\n", &ptr) //自己的地址
	fmt.Printf("*ptr 变量的值：%p\n", *ptr)   //p地址的值 他是一个地址
	fmt.Printf("*ptr变量地址的值：%d\n", **ptr) //p的地址里面的值

}
